/*! \file recovery.h
	\author HiddenSeeker

    Contains a recovery data
*/
#include <string>
#pragma once
class AbstractNode;
extern bool parse_error;
/*! Determines, whether strings are attached to nodes
*/
bool isAttachedToNodes();
/*! Deattaches strings from nodes
*/
void deattachFromNodes();
/*! Attaches nodes to strings
*/
void attachToNodes();
/*! Pushes new string into collector
	\param[in] text text data
*/
std::string * push_string(const char * text);
/*! Clears a string collector  data, without deallocating memory
*/
void          clear_string_collector();
/*!	Collects evey allocated string
*/
void          collect_strings();

/*! Pushes new node into collector
	\param[in] node node data
*/
AbstractNode * push_node(AbstractNode * data);
/*! Clears a node collector after successfull parse. Also calls AbstractNode::own()
*/
void clear_node_collector();
/*! Collect every allocated node
*/
void collect_nodes();


extern enum LexerStateType
{
	LST_NORMAL,
	LST_RETURN_TWO_DOTS,
	LST_RETURN_DOT,
	LST_RETURN_IDENTIFIER
} lexerstate;
